from sqlalchemy import Column, Integer, String, DateTime, Boolean
from sqlalchemy.sql import func
from app.database.base import Base

class User(Base):
    """用户模型"""
    __tablename__ = "users"  # 数据库表名
    
    # 主键ID，自增
    id = Column(Integer, primary_key=True, index=True, autoincrement=True)
    # 用户名，唯一且索引
    username = Column(String(50), unique=True, index=True, nullable=False)
    # 邮箱，唯一且索引
    email = Column(String(100), unique=True, index=True, nullable=False)
    # 密码哈希，不索引
    hashed_password = Column(String(255), nullable=False)
    # 全名，可索引
    full_name = Column(String(100), index=True, nullable=True)
    # 是否为活跃用户
    is_active = Column(Boolean, default=True)
    # 是否为管理员
    is_admin = Column(Boolean, default=False)
    # 创建时间，默认当前时间
    created_at = Column(DateTime(timezone=True), server_default=func.now())
    # 更新时间，自动更新
    updated_at = Column(DateTime(timezone=True), onupdate=func.now())
